home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Tele / C / Comet2.1.3.cpt / azInclude / quickdraw.h < prev    next >
Text File  |  1991-07-10  |  14KB  |  473 lines

  1. /* Copyright (C) 1984 by Manx Software Systems, Inc. */
  2.  
  3. #ifndef _QUICKDRAW
  4.  
  5. #ifndef _TYPES
  6. #include    <types.h>
  7. #endif
  8.  
  9. /*
  10.  *        QuickDraw data structures and function definitions.
  11.  */
  12.  
  13. #define    srcCopy            0
  14. #define    srcOr            1
  15. #define    srcXor            2
  16. #define    srcBic            3
  17. #ifndef SMALL_MEM
  18. #define    notSrcCopy        4
  19. #define    notSrcOr        5
  20. #define    notSrcXor        6
  21. #define    notSrcBic        7
  22. #endif
  23. #define    patCopy            8
  24. #define    patOr            9
  25. #define    patXor            10
  26. #define    patBic            11
  27. #ifndef SMALL_MEM
  28. #define    notPatCopy        12
  29. #define    notPatOr        13
  30. #define    notPatXor        14
  31. #define    notPatBic        15
  32.  
  33. #define    normalBit        0
  34. #define    inverseBit        1
  35. #define    redBit            4
  36. #define    greenBit        3
  37. #define    blueBit            2
  38. #define    cyanBit            8
  39. #define    magentaBit        7
  40. #define    yellowBit        6
  41. #define    blackBit        5
  42.  
  43. #define    blackColor        33
  44. #define    whiteColor        30
  45. #define    redColor        205
  46. #define    greenColor        341
  47. #define    blueColor        409
  48. #define    cyanColor        273
  49. #define    magentaColor    137
  50. #define    yellowColor        69
  51.  
  52. #define    picLParen        0
  53. #define    picRParen        1
  54. #endif
  55.  
  56. typedef    char                QDByte;
  57. typedef    QDByte *            QDPtr;
  58. typedef    QDPtr *                QDHandle;
  59. typedef unsigned char        Pattern[8];
  60. typedef int                 Bits16[16];
  61.  
  62. #define    frameMode    0
  63. #define    paintMode    1
  64. #define    eraseMode    2
  65. #define    invertMode    3
  66. #define    fillMode    4
  67.  
  68. typedef    unsigned char        Style;
  69. #define    boldStyle        0x01
  70. #define    italicStyle        0x02
  71. #define    underlineStyle    0x04
  72. #define    outlineStyle    0x08
  73. #define    shadowStyle        0x10
  74. #define    condenseStyle    0x20
  75. #define    extendStyle        0x40
  76.  
  77. struct FontInfo {
  78.     short    ascent;
  79.     short    descent;
  80.     short    widMax;
  81.     short    leading;
  82. };
  83. typedef struct FontInfo     FontInfo;
  84.  
  85. struct Point {
  86.     short    v;
  87.     short    h;
  88. };
  89. typedef    struct Point        Point;
  90.  
  91. #define    vh(x)    ((int *)(&(x).v))
  92.  
  93. struct Rect {
  94.     short    top;
  95.     short    left;
  96.     short    bottom;
  97.     short    right;
  98. };
  99. typedef struct Rect            Rect;
  100.  
  101. #define    topLeft(x)    (*(struct Point *)(&(x).top))
  102. #define    botRight(x)    (*(struct Point *)(&(x).bottom))
  103.  
  104. struct BitMap {
  105.     QDPtr        baseAddr;
  106.     short        rowBytes;
  107.     Rect        bounds;
  108. };
  109. typedef struct BitMap        BitMap;
  110.  
  111. struct Cursor {
  112.     Bits16            data;
  113.     Bits16            mask;
  114.     Point            hotSpot;
  115. };
  116. typedef struct Cursor        Cursor;
  117.  
  118. struct PenState {
  119.     Point            pnLoc;
  120.     Point            pnSize;
  121.     short            pnMode;
  122.     Pattern            pnPat;
  123. };
  124. typedef struct PenState        PenState;
  125.  
  126. struct Region {
  127.     short        rgnSize;
  128.     Rect        rgnBBox;
  129. };
  130. typedef struct Region        Region;
  131. typedef    struct Region *        RgnPtr;
  132. typedef    struct Region **    RgnHandle;
  133.  
  134. #ifndef SMALL_MEM
  135. struct Picture {
  136.     short        picSize;
  137.     Rect        picFrame;
  138. };
  139. typedef struct Picture        Picture;
  140. #endif
  141. typedef    struct Picture *    PicPtr;
  142. typedef    struct Picture **    PicHandle;
  143.  
  144. #ifndef SMALL_MEM
  145. struct Polygon {
  146.     short            polySize;
  147.     Rect            polyBBox;
  148.     Point            polyPoints[1];
  149. };
  150. typedef struct Polygon        Polygon;
  151. typedef    struct Polygon *    PolyPtr;
  152. typedef    struct Polygon **    PolyHandle;
  153.  
  154. struct QDProcs {
  155.     QDPtr    textProc;
  156.     QDPtr    lineProc;
  157.     QDPtr    rectProc;
  158.     QDPtr    rRectProc;
  159.     QDPtr    ovalProc;
  160.     QDPtr    arcProc;
  161.     QDPtr    polyProc;
  162.     QDPtr    rgnProc;
  163.     QDPtr    bitsProc;
  164.     QDPtr    commentProc;
  165.     QDPtr    txMeasProc;
  166.     QDPtr    getPicProc;
  167.     QDPtr    putPicProc;
  168. };
  169. typedef struct QDProcs        QDProcs;
  170. typedef    struct QDProcs *    QDProcsPtr;
  171. #endif
  172.  
  173. struct GrafPort {
  174.     short                device;
  175.     BitMap                portBits;
  176.     Rect                portRect;
  177.     RgnHandle            visRgn;
  178.     RgnHandle            clipRgn;
  179.     Pattern                bkPat;
  180.     Pattern                fillPat;
  181.     Point                pnLoc;
  182.     Point                pnSize;
  183.     short                pnMode;
  184.     Pattern                pnPat;
  185.     short                pnVis;
  186.     short                txFont;
  187.     Style                txFace;
  188.     short                txMode;
  189.     short                txSize;
  190.     long                spExtra;
  191.     long                fgColor;
  192.     long                bkColor;
  193.     short                colorBit;
  194.     short                patStretch;
  195.     QDHandle            picSave;
  196.     QDHandle            rgnSave;
  197.     QDHandle            polySave;
  198. #ifndef SMALL_MEM
  199.     QDProcsPtr            grafProcs;
  200. #else
  201.     Ptr                    grafProcs;
  202. #endif
  203. };
  204. typedef struct GrafPort        GrafPort;
  205. typedef    struct GrafPort *    GrafPtr;
  206.  
  207. #ifndef _DRIVER
  208. extern GrafPtr                thePort;
  209. extern Pattern                white;
  210. extern Pattern                black;
  211. extern Pattern                gray;
  212. extern Pattern                ltGray;
  213. extern Pattern                dkGray;
  214. extern Cursor                arrow;
  215. extern BitMap                screenBits;
  216. extern long                randSeed;
  217. #endif
  218.  
  219. pascal void                    InitGraf()            =    0xa86e;
  220. pascal void                    OpenPort()            =    0xa86f;
  221. pascal void                    InitPort()            =    0xa86d;
  222. pascal void                    ClosePort()            =    0xa87d;
  223. pascal void                    SetPort()            =    0xa873;
  224. pascal void                    GetPort()            =    0xa874;
  225. pascal void                    GrafDevice()        =    0xa872;
  226. pascal void                    SetPortBits()        =    0xa875;
  227. pascal void                    PortSize()            =    0xa876;
  228. pascal void                    MovePortTo()        =    0xa877;
  229. pascal void                    SetOrigin()            =    0xa878;
  230. pascal void                    SetClip()            =    0xa879;
  231. pascal void                    GetClip()            =    0xa87a;
  232. pascal void                    ClipRect()            =    0xa87b;
  233. pascal void                    BackPat()            =    0xa87c;
  234. pascal void                    InitCursor()        =    0xa850;
  235. pascal void                    SetCursor()            =    0xa851;
  236. pascal void                    HideCursor()        =    0xa852;
  237. pascal void                    ShowCursor()        =    0xa853;
  238. pascal void                    ObscureCursor()        =    0xa856;
  239. pascal void                    HidePen()            =    0xa896;
  240. pascal void                    ShowPen()            =    0xa897;
  241. pascal void                    GetPen()            =    0xa89a;
  242. pascal void                    GetPenState()        =    0xa898;
  243. pascal void                    SetPenState()        =    0xa899;
  244. pascal void                    PenSize()            =    0xa89b;
  245. pascal void                    PenMode()            =    0xa89c;
  246. pascal void                    PenPat()            =    0xa89d;
  247. pascal void                    PenNormal()            =    0xa89e;
  248. pascal void                    MoveTo()            =    0xa893;
  249. pascal void                    Move()                =    0xa894;
  250. pascal void                    LineTo()            =    0xa891;
  251. pascal void                    Line()                =    0xa892;
  252. pascal void                    TextFont()            =    0xa887;
  253. pascal void                    TextFace()            =    0xa888;
  254. pascal void                    TextMode()            =    0xa889;
  255. pascal void                    TextSize()            =    0xa88a;
  256. pascal void                    SpaceExtra()        =    0xa88e;
  257. pascal void                    DrawChar()            =    0xa883;
  258. pascal void                    DrawString()        =    0xa884;
  259. pascal void                    DrawText()            =    0xa885;
  260. pascal short                CharWidth()            =    0xa88d;
  261. pascal short                StringWidth()        =    0xa88c;
  262. pascal short                TextWidth()            =    0xa886;
  263. pascal void                    GetFontInfo()        =    0xa88b;
  264. pascal void                    SetRect()            =    0xa8a7;
  265. pascal void                    OffsetRect()        =    0xa8a8;
  266. pascal void                    InsetRect()            =    0xa8a9;
  267. pascal Boolean                SectRect()            =    0xa8aa;
  268. pascal void                    UnionRect()            =    0xa8ab;
  269. pascal Boolean                PtInRect()            =    0xa8ad;
  270. pascal void                    Pt2Rect()            =    0xa8ac;
  271. pascal void                    PtToAngle()            =    0xa8c3;
  272. pascal Boolean                EqualRect()            =    0xa8a6;
  273. pascal Boolean                EmptyRect()            =    0xa8ae;
  274. pascal void                    FrameRect()            =    0xa8a1;
  275. pascal void                    PaintRect()            =    0xa8a2;
  276. pascal void                    EraseRect()            =    0xa8a3;
  277. pascal void                    InvertRect()        =    0xa8a4;
  278. pascal void                    FillRect()            =    0xa8a5;
  279. pascal void                    FrameRoundRect()    =    0xa8b0;
  280. pascal void                    PaintRoundRect()    =    0xa8b1;
  281. pascal void                    EraseRoundRect()    =    0xa8b2;
  282. pascal void                    InvertRoundRect()    =    0xa8b3;
  283. pascal void                    FillRoundRect()        =    0xa8b4;
  284. pascal RgnHandle            NewRgn()            =    0xa8d8;
  285. pascal void                    DisposeRgn()        =    0xa8d9;
  286. pascal void                    CopyRgn()            =    0xa8dc;
  287. pascal void                    SetEmptyRgn()        =    0xa8dd;
  288. pascal void                    SetRectRgn()        =    0xa8de;
  289. pascal void                    RectRgn()            =    0xa8df;
  290. pascal void                    OpenRgn()            =    0xa8da;
  291. pascal void                    CloseRgn()            =    0xa8db;
  292. pascal void                    OffsetRgn()            =    0xa8e0;
  293. pascal void                    InsetRgn()            =    0xa8e1;
  294. pascal void                    SectRgn()            =    0xa8e4;
  295. pascal void                    UnionRgn()            =    0xa8e5;
  296. pascal void                    DiffRgn()            =    0xa8e6;
  297. pascal void                    XorRgn()            =    0xa8e7;
  298. pascal Boolean                PtInRgn()            =    0xa8e8;
  299. pascal Boolean                RectInRgn()            =    0xa8e9;
  300. pascal Boolean                EqualRgn()            =    0xa8e3;
  301. pascal Boolean                EmptyRgn()            =    0xa8e2;
  302. pascal void                    FrameRgn()            =    0xa8d2;
  303. pascal void                    PaintRgn()            =    0xa8d3;
  304. pascal void                    EraseRgn()            =    0xa8d4;
  305. pascal void                    InvertRgn()            =    0xa8d5;
  306. pascal void                    FillRgn()            =    0xa8d6;
  307. pascal void                    ScrollRect()        =    0xa8ef;
  308. pascal void                    CopyBits()            =    0xa8ec;
  309. pascal void                    AddPt()                =    0xa87e;
  310. pascal void                    SubPt()                =    0xa87f;
  311. pascal void                    SetPt()                =    0xa880;
  312. pascal Boolean                EqualPt()            =    0xa881;
  313. pascal void                    LocalToGlobal()        =    0xa870;
  314. pascal void                    GlobalToLocal()        =    0xa871;
  315. pascal short                Random()            =    0xa861;
  316. pascal Boolean                GetPixel()            =    0xa865;
  317. pascal void                    StuffHex()            =    0xa866;
  318. pascal void                    ScalePt()            =    0xa8f8;
  319. pascal void                    MapPt()                =    0xa8f9;
  320. pascal void                    MapRect()            =    0xa8fa;
  321. pascal void                    MapRgn()            =    0xa8fb;
  322. #ifndef SMALL_MEM
  323. pascal PicHandle            OpenPicture()        =    0xa8f3;
  324. pascal void                    PicComment()        =    0xa8f2;
  325. pascal void                    ClosePicture()        =    0xa8f4;
  326. pascal void                    DrawPicture()        =    0xa8f6;
  327. pascal void                    KillPicture()        =    0xa8f5;
  328. pascal PolyHandle            OpenPoly()            =    0xa8cb;
  329. pascal void                    ClosePoly()            =    0xa8cc;
  330. pascal void                    KillPoly()            =    0xa8cd;
  331. pascal void                    OffsetPoly()        =    0xa8ce;
  332. pascal void                    FramePoly()            =    0xa8c6;
  333. pascal void                    PaintPoly()            =    0xa8c7;
  334. pascal void                    ErasePoly()            =    0xa8c8;
  335. pascal void                    InvertPoly()        =    0xa8c9;
  336. pascal void                    FillPoly()            =    0xa8ca;
  337. pascal void                    MapPoly()            =    0xa8fc;
  338. pascal void                    SetStdProcs()        =    0xa8ea;
  339. pascal void                    StdText()            =    0xa882;
  340. pascal void                    StdLine()            =    0xa890;
  341. pascal void                    StdRect()            =    0xa8a0;
  342. pascal void                    StdRRect()            =    0xa8af;
  343. pascal void                    StdOval()            =    0xa8b6;
  344. pascal void                    StdArc()            =    0xa8bd;
  345. pascal void                    StdPoly()            =    0xa8c5;
  346. pascal void                    StdRgn()            =    0xa8d1;
  347. pascal void                    StdBits()            =    0xa8eb;
  348. pascal void                    StdComment()        =    0xa8f1;
  349. pascal short                StdTxMeas()            =    0xa8ed;
  350. pascal void                    StdGetPic()            =    0xa8ee;
  351. pascal void                    StdPutPic()            =    0xa8f0;
  352. pascal void                    ForeColor()            =    0xa862;
  353. pascal void                    BackColor()            =    0xa863;
  354. pascal void                    ColorBit()            =    0xa864;
  355. pascal void                    FrameOval()            =    0xa8b7;
  356. pascal void                    PaintOval()            =    0xa8b8;
  357. pascal void                    EraseOval()            =    0xa8b9;
  358. pascal void                    InvertOval()        =    0xa8ba;
  359. pascal void                    FillOval()            =    0xa8bb;
  360. pascal void                    FrameArc()            =    0xa8be;
  361. pascal void                    PaintArc()            =    0xa8bf;
  362. pascal void                    EraseArc()            =    0xa8c0;
  363. pascal void                    InvertArc()            =    0xa8c1;
  364. pascal void                    FillArc()            =    0xa8c2;
  365.  
  366. char * GetMaskTable();
  367. pascal void                    CopyMask()            =    0xa817;
  368. pascal void                    MeasureText()        =    0xa837;
  369. pascal void                    CalcMask()            =    0xa838;
  370. pascal void                    SeedFill()            =    0xa839;
  371. #endif
  372.  
  373. char *ctop();
  374. char *ptoc();
  375. #define    pass(x)    (*((long *)&(x)))
  376.  
  377.  
  378. /* KEVIN added for color quickdraw compatibility */
  379. struct RGBColor {
  380.     short red;
  381.     short green;
  382.     short blue;
  383. };
  384. typedef struct RGBColor RGBColor;
  385.  
  386. struct PixMap {
  387.     Ptr baseAddr;                   /*pointer to pixels*/
  388.     short rowBytes;                 /*offset to next line*/
  389.     Rect bounds;                    /*encloses bitmap*/
  390.     short pmVersion;                /*pixMap version number*/
  391.     short packType;                 /*defines packing format*/
  392.     long packSize;                  /*length of pixel data*/
  393.     Fixed hRes;                     /*horiz. resolution (ppi)*/
  394.     Fixed vRes;                     /*vert. resolution (ppi)*/
  395.     short pixelType;                /*defines pixel type*/
  396.     short pixelSize;                /*# bits in pixel*/
  397.     short cmpCount;                 /*# components in pixel*/
  398.     short cmpSize;                  /*# bits per component*/
  399.     long planeBytes;                /*offset to next plane*/
  400.     Handle pmTable;             /* CTabHandle color map for this pixMap*/
  401.     long pmReserved;                /*for future use. MUST BE 0*/
  402. };
  403.  
  404. typedef struct PixMap PixMap;
  405. typedef PixMap *PixMapPtr, **PixMapHandle;
  406.  
  407. struct GDevice {
  408.     short gdRefNum;                 /*driver's unit number*/
  409.     short gdID;                     /*client ID for search procs*/
  410.     short gdType;                   /*fixed/CLUT/direct*/
  411.     Handle gdITable;            /* ITabHandle Handle to inverse lookup table*/
  412.     short gdResPref;                /*preferred resolution of GDITable*/
  413.     Handle gdSearchProc;         /* SProcHndl search proc list head*/
  414.     Handle gdCompProc;           /* CProcHndl complement proc list*/
  415.     short gdFlags;                  /*grafDevice flags word*/
  416.     PixMapHandle gdPMap;            /*describing pixMap*/
  417.     long gdRefCon;                  /*reference value*/
  418.     Handle gdNextGD;                /*GDHandle Handle of next gDevice*/
  419.     Rect gdRect;                    /* device's bounds in global coordinates*/
  420.     long gdMode;                    /*device's current mode*/
  421.     short gdCCBytes;                /*depth of expanded cursor data*/
  422.     short gdCCDepth;                /*depth of expanded cursor data*/
  423.     Handle gdCCXData;               /*Handle to cursor's expanded data*/
  424.     Handle gdCCXMask;               /*Handle to cursor's expanded mask*/
  425.     long gdReserved;                /*future use. MUST BE 0*/
  426. };
  427.  
  428. typedef struct GDevice GDevice;
  429. typedef GDevice *GDPtr, **GDHandle;
  430.  
  431. #define clutType 0                  /*0 if lookup table*/
  432. #define fixedType 1                 /*1 if fixed table*/
  433. #define directType 2                /*2 if direct values*/
  434. #define gdDevType 0                 /*0 = monochrome 1 = color*/
  435. #define ramInit 10                  /*1 if initialized from 'scrn' resource*/
  436. #define mainScreen 11               /* 1 if main screen */
  437. #define allInit 12                  /* 1 if all devices initialized */
  438. #define screenDevice 13             /*1 if screen device [not used]*/
  439. #define noDriver 14                 /* 1 if no driver for this GDevice */
  440. #define screenActive 15             /*1 if in use*/
  441. #define hiliteBit 7                 /*flag bit in HiliteMode (lowMem flag)*/
  442. #define pHiliteBit 0                /*flag bit in HiliteMode used with BitClr procedure*/
  443. #define defQDColors 127             /*resource ID of clut for default QDColors*/
  444.  
  445.  
  446. pascal Handle                    GetGDevice()            =    0xaa32;
  447. pascal Handle                    GetDeviceList()            =    0xaa29;
  448. pascal Handle                    GetNextDevice()            =    0xaa2b;
  449. pascal Handle                    TestDeviceAttribute()    =    0xaa2c;
  450. pascal void    RGBForeColor()                                =    0xaa14;
  451. pascal void    RGBBackColor()                                =    0xaa15;
  452. pascal void GetForeColor()                                =    0xaa19;
  453. pascal void GetBackColor()                                =    0xaa1a;
  454. pascal void PmForeColor()                                =    0xaa1a;
  455. pascal void PmBackColor()                                =    0xaa1a;
  456.  
  457. pascal long Color2Index()                                =    0xaa33;
  458. pascal void Index2Color()                                =    0xaa34;
  459.  
  460. pascal Boolean getcolor()                                    =    0xA82E;
  461.     /* bogus entry ... */
  462.     
  463.     
  464. /* added osutil defs ...
  465. pascal void SwapMMUMode()                                =    0xa05d; 
  466. natch, it's OS so it's NOT a pascal routine... */
  467.  
  468. #define false32b    0
  469. #define true32b        1
  470.  
  471. #define    _QUICKDRAW
  472. #endif
  473.